// 2928 给小朋友们分糖果1
// https://leetcode.cn/problems/distribute-candies-among-children-i/description/?envType=daily-question&envId=2024-06-01

/**
 * 示例 1：

输入：n = 5, limit = 2
输出：3
解释：总共有 3 种方法分配 5 颗糖果，且每位小朋友的糖果数不超过 2 ：(1, 2, 2) ，(2, 1, 2) 和 (2, 2, 1) 。
示例 2：

输入：n = 3, limit = 3
输出：10
解释：总共有 10 种方法分配 3 颗糖果，且每位小朋友的糖果数不超过 3 ：(0, 0, 3) ，(0, 1, 2) ，(0, 2, 1) ，(0, 3, 0) ，(1, 0, 2) ，(1, 1, 1) ，(1, 2, 0) ，(2, 0, 1) ，(2, 1, 0) 和 (3, 0, 0) 。
 */

/**
 * @param {number} n
 * @param {number} limit
 * @return {number}
 */
var distributeCandies = function (n, limit) {
    let ret = [];
    for (let i = 0; i <= limit; i++) {
        for (let j = 0; j <= Math.min(limit, n - i); j++) {
            let k = n - i - j;

            if (k <= limit) {
                ret.push([i, j, k]);
            }
        }
    }

    console.log(`n: ${n}, limit: ${limit}, 共有${ret.length}种方法`);
    console.log(JSON.stringify(ret));
};

distributeCandies(5, 2);
distributeCandies(3, 3);
